如果您打算开发面向 Android 系统的 Kanzi 应用程序,您可以使用 Android Studio、Clang 工具链和 Gradle 构建系统。此开发方式已在 Ubuntu/Linux 16.04.5、Ubuntu/Linux 18.04.1 和 Windows 10 上经过测试。
要构建和部署使用 Kanzi 3.6.3 创建的 Kanzi 应用程序或更早版本,请参阅 构建和部署 Kanzi 3.6.3 及更早版本应用程序到 Android。
要使用 Kanzi Android 平台软件包构建和部署 Kanzi 应用程序到 Android 设备,您需要:
将 Kanzi Android 平台包 zip 文件解压到 <KanziWorkspace> 目录。当解压 zip 文件时,跳过相同文件,不要覆盖原有文件。
安装 Kanzi Android 平台软件包后,设置您的构建环境。
要设置构建环境,请执行以下操作:
要一起使用 Android 平台软件包和 Kanzi 3.6.4 或 3.6.5 应用程序,您可以迁移应用程序。请参阅 迁移 Kanzi 3.6.4 和 3.6.5 应用程序以使用 Android 平台包。
要从 Android Studio 构建和部署 Kanzi 应用程序,请执行以下操作:
If you do not specify the target architecture, Gradle builds the package for all supported platforms. You can set the architectures for which you want to build your package in build.gradle.
android { defaultConfig { ndk { abiFilters 'arm64-v8a', 'x86' } } }
如果您要一起使用 Android 平台软件包和 Kanzi 3.6.4 或 3.6.5 应用程序,您可以迁移应用程序。请参阅 迁移 Kanzi 3.6.4 和 3.6.5 应用程序以使用 Android 平台包。
您可以使用命令行构建和部署您的 Kanzi 应用程序到 Android 设备。在 <KanziWorkspace>/Engine/applications/kzb_player/configs/platforms/android_gradle 目录中:
gradlew assembleRelease
gradlew assembleProfiling
gradlew assembleDebug
gradlew assembleRelease -Parch=arm
gradlew assembleRelease -Parch=arm,aarch64,x86
gradlew assembleRelease installRelease
gradlew startPackage
gradlew clean cleanNative
错误:构建失败,出现异常。 * 出错内容: Execution failed for task ':app.packageDebug'. > 未能获取条目的压缩信息
检查您使用的是否是 Android Studio 4.1.0 或更新版本。此错误发生在 Android Studio 3.1 版本中。
错误:构建失败,出现异常。 * 出错内容: Execution failed for task ':app.packageDebug'. > Java 堆空间
增加 Gradle 中可用的堆数量。例如,在 Android Studio 的 android_gradle 工程中打开 gradle.properties 文件并设置:
org.gradle.jvmargs=-Xmx4608m
安装失败,提示“未能完成会话”消息: INSTALL_FAILED_INSUFFICIENT_STORAGE.
在 Android Studio 的 Android 虚拟设备配置中,增加内部存储和 SD 卡存储大小。
错误:构建失败,出现异常。 * 出错位置: Build file 'Engine\configs\platforms\android_gradle\kanziruntime\build.gradle' line: 103 * 出错内容: A problem occurred evaluating project ':kanziruntime'. > <PathToKanziWorkspace>\Engine\version.txt not found
在您工程的 Application/configs/platforms/android_gradle 目录中,创建一个名为“local.properties”的文件,在该文件中为您的工作区设置正确的位置。例如,设置:
kanzi.home=C\:\\KanziWorkspace_3_6_6_147
> Task :kanziruntime:cmakeInstallNativeLibsRelease FAILED 'cmake' 未被识别为内部或外部命令,也不是可运行的程序或批处理文件。 执行任务 ':kanziruntime:cmakeInstallNativeLibsRelease’失败。 > 处理 'command 'cmd 已完成,非零退出值 1
将到 Cmake bin 目录的路径添加到您的系统路径。您可以在 Android SDK 中找到 bin 目录。例如,您可以找到 android-sdk\cmake\3.6.4111459\bin 目录。
More than one file was found with OS independent path 'lib/arm64-v8a/libkzcoreui.so'. This version of the Android Gradle
Plugin chooses the file from the app or dynamic-feature module,but this can cause unexpected behavior or errors at runtime.
Future versions of the Android Gradle Plugin will throw an error in this case
Update the Kanzi Gradle plugin to version 0.6.1. Whenever you update the Gradle version, update the Kanzi Gradle plugin to the same version.
在 Kanzi Studio 中您可以使用一条命令构建和部署您的 Kanzi 应用程序到 Android 设备。如果您尚处在应用程序的开发或原型设计阶段,但又想要了解应用程序在 Android 设备上如何运行以及看起来怎么样时,可以使用此方法。
您需要先为 Android 建立 Kanzi 构建环境,并在您的计算机上安装用于 Android 设备的 USB 设备驱动程序,然后才能从 Kanzi Studio 构建 Kanzi 应用程序并将其部署到 Android 设备。请参阅 安装适用于 Android 的 Kanzi 构建环境。
如果您的 Kanzi 应用程序包含一个 Kanzi Engine 插件,则您必须手动构建和部署您的应用程序。请参阅 构建和部署 Kanzi 3.6.3 及更早版本应用程序到 Android。
要从 Kanzi Studio 构建和部署 Kanzi 应用程序,请执行以下操作:
<target name="-pre-compile">
目标中。例如,要添加 <ProjectName>/Application/bin 目录中的所有 .xml 和 .png 文件,使用<target name="-pre-compile"> <echo>Copying assets</echo> <copy todir="${asset.absolute.dir}"> <fileset dir="${asset.absolute.dir}/../../../../bin"> <include name="**/*.kzb"/> <include name="**/*.cfg"/> <include name="**/*.xml"/> <include name="**/*.png"/>
您可以使用 Kanzi Studio 中的应用程序配置来配置用于 Android 的 Kanzi 应用程序版本。例如,您可以设置目标架构以及 Kanzi 是否需要将所构建的包部署到附加的目标设备上。您可以设置当您在默认版本配置 (Default Build Configuration) 属性中的 > 中选择 > 导出 (Export) > 构建 Android 包 (Build Android Package) 时要使用哪个应用程序配置。
Android 平台包不支持 V8 库。在您迁移 Kanzi 应用程序前,请禁用或移除您希望迁移的 Kanzi 应用程序中的 JavaScript。
要使用 Android 平台包,请按以下步骤迁移 Kanzi 3.6.4 和 3.6.5 应用程序:
com.rightware.kanzi.kzbplayer
com.rightware.kanzi.myproject
KZBPlayer
MyProject
TAG
"KZBPlayer"
"MyProject"
Debug.startMethodTracing("kzbplayer")
Debug.startMethodTracing("myproject")
com.rightware.kanzi.kzbplayer
com.rightware.kanzi.myproject
activity android:name=".KZBPlayer"
activity android:name=".MyProject"
<string name="app_name">KZB Player</string>
<string name="app_name">MyProject</string>
project(kzb_player)
project(myproject)
add_executable(${PROJECT_NAME} src/main/cpp/kzb_player.cpp)
add_executable(${PROJECT_NAME} ../../../../src/myproject.cpp)
rootProject.name
的值设置为 "myproject"
。applicationId
指向您的应用程序。applicationId
设置为 "com.rightware.kanzi.myproject"
。org.gradle.jvmargs=-Xmx<size>mwith
org.gradle.jvmargs=-Xmx4608m
类 <ProjectName>: public ExampleApplication
更改为
类 <ProjectName>: public Application
registerMetadataOverride
回调。类 <ProjectName>: public Application
{
public:
...
virtual void registerMetadataOverride(ObjectFactory& /*factory*/) KZ_OVERRIDE
{
Domain* domain = getDomain();
KanziComponentsModule::registerModule(domain);
}
};
onConfigure
回调函数中,移除对 ExampleApplication
类的引用: virtual void onConfigure(ApplicationProperties& configuration) KZ_OVERRIDE
{
Application::onConfigure(configuration);
configuration.binaryName = "<project_name>.kzb.cfg";
configuration.extensionOutputEnabled = true;
configuration.defaultSurfaceProperties.antiAliasing = 0;
configuration.defaultSurfaceProperties.bitsDepthBuffer = 0;
configuration.defaultSurfaceProperties.bitsStencil = 0;
}
此方法只适用于构建和部署使用 Kanzi 3.6.3 或更早版本创建的 Kanzi 应用程序到 Android
SCons 在平台的配置目录中运行 SConstruct,您可以通过该平台运行 scons
命令。SConstruct 文件是构建应用程序的入口点,包含有关 Kanzi Engine 位置的信息并运行以下文件:
要构建和部署 Kanzi 3.6.3 及更早版本应用程序到 Android,请执行以下操作:
<target name="-pre-compile">
目标中。例如,要添加 <ProjectName>/Application/bin 目录中的所有 .xml 和 .png 文件,使用<target name="-pre-compile"> <echo>Copying assets</echo> <copy todir="${asset.absolute.dir}"> <fileset dir="${asset.absolute.dir}/../../../../bin"> <include name="**/*.kzb"/> <include name="**/*.cfg"/> <include name="**/*.xml"/> <include name="**/*.png"/>
scons
命令,并使用您的 Kanzi 应用程序的构建参数。语法 | scons <library> <type> <name> | ||||||
参数 |
| ||||||
示例 | //使用在 config.py 和 SConstruct 配置文件中指定的默认设置 //构建应用程序。 scons // 构建和部署带有 OpenGL 图形库的 // 应用程序调试版本。 scons GL 调试
// 从名为“MyProject”的 Kanzi Studio
//工程创建带有 OpenGL ES 2.0 图形库的
//应用程序调试版本。
scons ES2 debug MyProject |
Scons 在 <ProjectName>/Application/output 目录中构建 Kanzi 应用程序源代码和二进制文件。
adb install
或 ant release install
,以便将 Kanzi 应用程序的 .apk 包安装到您的 Android 设备上。adb install MyProject.apk
ant release install
要为用于 Android 的 Kanzi 应用程序设置 Java 版本,请将其作为顶层 <project> 元素的第一个子元素添加到 Application/configs/platforms/android/build.xml 中,并将值特性设置为要使用的 Java 版本
<property name="java.target" value="7" /> <property name="java.source" value="7" />
[dex] Pre-Dexing C:\KanziWorkspace\3rdPartySDKs\android-sdk-windows\tools\support \annotations.jar -> annotations-fa751cd593bf7078e9c18d47a485e852.jar [dx] Error: Could not create the Java Virtual Machine.Error occurred during initialization of VM [dx] Error: A fatal exception has occurred.Program will exit. [dx] [dx] Could not reserve enough space for object heap BUILD FAILED
请在 <KanziWorkspace>/3rdPartySDKs/android-sdk-windows/build-tools/18.1.0/dx.bat 中限制 dx 工具的最大堆大小。更改下行代码:
setdefaultXmx=
-Xmx1024M
为
set defaultXmx=-Xmx512M
Class not found: javac1.8
-Dbuild.compiler=javac1.7
[javac] C:\KanziWorkspace\Projects\Myproject.java:142: error: binary literals are not supported in -source 1.5 [javac] private static int i = 0b10101; [javac] ^ [javac] (use -source 7 or higher to enable binary literals) [javac] 1 error
您必须使用支持二进制文字的 Java 版本。请参阅 设置用于 Kanzi 应用程序的 Java 版本。